Gleb Kozyrev [Tue, 13 Oct 2015 00:31:57 +0000 (03:31 +0300)]
Clarify the default `cargo run` error message on a non-zero exit code
The behavior is the same in the default and verbose modes now:
- the default mode will not suggest re-running with `--verbose`
- the verbose mode will not print the binary name.
Gleb Kozyrev [Tue, 13 Oct 2015 00:30:44 +0000 (03:30 +0300)]
Add `cargo run` exit_code_verbose test
bors [Mon, 12 Oct 2015 20:42:41 +0000 (20:42 +0000)]
Auto merge of #2052 - rgardner:add-wildcard-end-date-to-faq, r=alexcrichton
This adds a bolded message to the FAQ clarifying the last date crates.io
will accept crates with wildcard dependencies.
Closes rust-lang/crates.io#200
Robert Gardner [Mon, 12 Oct 2015 16:31:56 +0000 (12:31 -0400)]
Add crates.io wildcard end date to FAQ
This adds a bolded message to the FAQ clarifying the last date crates.io
will accept crates with wildcard dependencies.
Closes rust-lang/crates.io#200
bors [Mon, 12 Oct 2015 02:00:27 +0000 (02:00 +0000)]
Auto merge of #2050 - gkoz:build_cfgs, r=alexcrichton
Fixes #1980
Gleb Kozyrev [Sat, 10 Oct 2015 14:39:19 +0000 (17:39 +0300)]
Propagate custom cfg directives to rustdoc, fixes #1980
Gleb Kozyrev [Sat, 10 Oct 2015 13:11:45 +0000 (16:11 +0300)]
Store all cfgs in Compilation instead of features only
Gleb Kozyrev [Sat, 10 Oct 2015 14:20:21 +0000 (17:20 +0300)]
Add features test to cardo doc tests
Gleb Kozyrev [Fri, 9 Oct 2015 18:37:53 +0000 (21:37 +0300)]
Add tests for passing cfg directives when building tests and rustdoc
Reproduces #1980
bors [Sat, 10 Oct 2015 00:55:14 +0000 (00:55 +0000)]
Auto merge of #2048 - alexcrichton:build-script-fresh, r=brson
This commit causes a recompile to be triggered if the overridden version of a
build script changed since it was last run. Previously this wasn't tracked very
well due to fingerprints not accounting for the right data.
There are a few architectural changes here which were made to prepare for this:
* The unit of work for "running a build script" is now emitted as dependency
regardless of whether a build script is overridden or not. Previously it was
omitted if overridden.
* This unit of work has 0 dependencies if it is overridden (as we know the
output) and otherwise has the normal set of dependencies.
* The fingerprint calculation was updated to recognize when a build script
execution is overridden and instead consider the overridden value as input to
the fingerprint. This means that if the overridden values change they will
trigger a recompile.
* The "prepare a build script to run" step now emits a noop if the execution of
the build script is overridden.
After putting all that together, this commit ...
Closes #2042
Alex Crichton [Fri, 9 Oct 2015 21:15:25 +0000 (14:15 -0700)]
Fix recompiles where overrides changed
This commit causes a recompile to be triggered if the overridden version of a
build script changed since it was last run. Previously this wasn't tracked very
well due to fingerprints not accounting for the right data.
There are a few architectural changes here which were made to prepare for this:
* The unit of work for "running a build script" is now emitted as dependency
regardless of whether a build script is overridden or not. Previously it was
omitted if overridden.
* This unit of work has 0 dependencies if it is overridden (as we know the
output) and otherwise has the normal set of dependencies.
* The fingerprint calculation was updated to recognize when a build script
execution is overridden and instead consider the overridden value as input to
the fingerprint. This means that if the overridden values change they will
trigger a recompile.
* The "prepare a build script to run" step now emits a noop if the execution of
the build script is overridden.
After putting all that together, this commit ...
Closes #2042
bors [Fri, 9 Oct 2015 20:46:29 +0000 (20:46 +0000)]
Auto merge of #2046 - gkoz:find_perm, r=alexcrichton
This is an improvement of
fd781a12 adopted by rustc in https://github.com/rust-lang/rust/commit/
f001f9a7
See also #822
bors [Fri, 9 Oct 2015 17:48:30 +0000 (17:48 +0000)]
Auto merge of #2044 - alexcrichton:fingerprint-better, r=brson
This helps diagnose "why did this rebuild" situations so not only the mtime is
known but also the file in question.
Gleb Kozyrev [Fri, 9 Oct 2015 17:24:24 +0000 (20:24 +0300)]
Ignore `*.py` in `make no-exes`
bors [Fri, 9 Oct 2015 17:03:44 +0000 (17:03 +0000)]
Auto merge of #2047 - akiss77:makefile-cfg-optimize, r=alexcrichton
Until now, there was a CFG_DISABLE_OPTIMIZE that controlled whether `--release` is passed to cargo during the build, and a CFG_ENABLE_OPTIMIZE that controlled where `make install` (among others) looked for the already built cargo executable. Unfortunately, if none of these were specified, `make all` built a release cargo but `make install` looked for it under `$(CFG_TARGET)/debug` (and aborted with "Please run `make` first"). This patch keeps CFG_DISABLE_OPTIMIZE only and uses it consistently.
bors [Fri, 9 Oct 2015 16:36:30 +0000 (16:36 +0000)]
Auto merge of #2045 - zv:master, r=alexcrichton
This pull request fixes two distinct issues with the `_cargo` compdef:
- Tab-completion should supply `--color=` options (`none`, `auto`, and `always`)
- Updates the deprecated "command scope flags" which now have a single, unambiguous representative variable which provides the appropriate exclusivity between options.
Akos Kiss [Fri, 9 Oct 2015 16:01:13 +0000 (16:01 +0000)]
Fix the usage of CFG_xxxABLE_OPTIMIZE variables in Makefiles
Until now, there was a CFG_DISABLE_OPTIMIZE that controlled whether
`--release` is passed to cargo during the build, and a
CFG_ENABLE_OPTIMIZE that controlled where `make install` (among
others) looked for the already built cargo executable.
Unfortunately, if none of these were specified, `make all` built a
release cargo but `make install` looked for it under
`$(CFG_TARGET)/debug` (and aborted with "Please run `make` first").
This patch keeps CFG_DISABLE_OPTIMIZE only and uses it
consistently.
Gleb Kozyrev [Fri, 9 Oct 2015 14:43:12 +0000 (17:43 +0300)]
Use the more portable `find -perm` syntax
This is an improvement of
fd781a12 adopted by rustc in https://github.com/rust-lang/rust/commit/
f001f9a7
See also #822
zv [Fri, 9 Oct 2015 08:04:58 +0000 (01:04 -0700)]
Merge branch 'compdef_coloropts'
* compdef_coloropts:
zsh compdef should supply color options
zv [Fri, 9 Oct 2015 07:46:32 +0000 (00:46 -0700)]
zsh compdef should supply color options
ZSH compdef should prompt to complete the options of
--color (auto|always|never)
zv [Fri, 9 Oct 2015 07:32:41 +0000 (00:32 -0700)]
Replace repeat options w/ command_scope_spec spec
Multiple commands accept these 'command scope specifiers', all of which
have had their argument completion definitions consolidated in this
variable which is expanded into the argument matchspec where appropriate.
zv [Fri, 9 Oct 2015 06:37:06 +0000 (23:37 -0700)]
`_arguments` util. function for build scope specs
Includes a shared and mutally exclusive build scope specifier for:
* --bin
* --example
* --test
* --lib
* --bench
Alex Crichton [Fri, 9 Oct 2015 04:30:33 +0000 (21:30 -0700)]
Include filename in path fingerprint
This helps diagnose "why did this rebuild" situations so not only the mtime is
known but also the file in question.
bors [Thu, 8 Oct 2015 20:33:01 +0000 (20:33 +0000)]
Auto merge of #2035 - alexcrichton:optimize-default, r=brson
This change mirrors the compiler by enabling optimizations by default rather
than by default producing an unoptimized Cargo build. I was curious why #2033
hit a debug assertion when we don't ship any binaries with debug assertions
enabled, but it looked like Cargo was installed via Homebrew which [does not
currently enable optimizations][homebrew]. I'll also send a PR over there, but I
figured it'd be also good to nip this in the bud and just start enabling
optimizations by default.
[homebrew]: https://github.com/Homebrew/homebrew/blob/5d09dd/Library/Formula/rust.rb#L69
bors [Thu, 8 Oct 2015 20:15:13 +0000 (20:15 +0000)]
Auto merge of #2040 - alexcrichton:dedupe, r=brson
I removed this in
68014ab8 thinking it wasn't necessary, which it technically
isn't for correctness but it ends up leading to absurdly long command lines to
the compiler for larger projects. This also changes the `Vec` to be a `BTreeSet`
to have sorting and deduplication as we go along which should be much faster
than waiting to sort until the very end.
Alex Crichton [Thu, 8 Oct 2015 20:14:14 +0000 (13:14 -0700)]
Don't test SSL errors on OSX
Due to libgit2 perhaps using different frameworks it's a little too onerous to
test there. It's also pretty unlikely that libgit2 is configure to *not* have
SSL on OSX by mistake.
bors [Thu, 8 Oct 2015 18:06:44 +0000 (18:06 +0000)]
Auto merge of #2032 - alexcrichton:output-asap, r=brson
This can help debug some situations if an error happens parsing the output.
Alex Crichton [Thu, 8 Oct 2015 06:26:05 +0000 (23:26 -0700)]
Auto de-dupe build scripts to link
I removed this in
68014ab8 thinking it wasn't necessary, which it technically
isn't for correctness but it ends up leading to absurdly long command lines to
the compiler for larger projects. This also changes the `Vec` to be a `BTreeSet`
to have sorting and deduplication as we go along which should be much faster
than waiting to sort until the very end.
bors [Thu, 8 Oct 2015 02:08:10 +0000 (02:08 +0000)]
Auto merge of #2038 - zv:master, r=alexcrichton
The existing zsh completion script refers to deprecated options for initializing a new cargo package with version control (`--(no-)git` & `--hg`). This PR removes these old options and adds a new completion option `--vcs` which accepts either `git`, `hg` or `none` as it's own options.
zv [Thu, 8 Oct 2015 01:17:46 +0000 (18:17 -0700)]
Added `none` option to --vcs
zv [Thu, 8 Oct 2015 01:15:30 +0000 (18:15 -0700)]
Remove deprecated --no-git & --hg options
zv [Thu, 8 Oct 2015 01:13:25 +0000 (18:13 -0700)]
Replace --git with --vcs [git|hg]
bors [Wed, 7 Oct 2015 21:27:36 +0000 (21:27 +0000)]
Auto merge of #2036 - alexcrichton:update-build-tools, r=alexcrichton
* Updates git2-rs back to 0.3 now that the distribution issue on OSX has been
fixed.
* Updates libgit2-sys to using the `cmake` crate so building with VS 2015 can
work.
Alex Crichton [Wed, 7 Oct 2015 17:49:00 +0000 (10:49 -0700)]
Enable optimizations by default
This change mirrors the compiler by enabling optimizations by default rather
than by default producing an unoptimized Cargo build. I was curious why #2033
hit a debug assertion when we don't ship any binaries with debug assertions
enabled, but it looked like Cargo was installed via Homebrew which [does not
currently enable optimizations][homebrew]. I'll also send a PR over there, but I
figured it'd be also good to nip this in the bud and just start enabling
optimizations by default.
[homebrew]: https://github.com/Homebrew/homebrew/blob/5d09dd/Library/Formula/rust.rb#L69
Alex Crichton [Wed, 7 Oct 2015 18:26:14 +0000 (11:26 -0700)]
Update some build tools and libgit2
* Updates git2-rs back to 0.3 now that the distribution issue on OSX has been
fixed.
* Updates libgit2-sys to using the `cmake` crate so building with VS 2015 can
work.
* Update pkg-config to totally disable it on MSVC (basically guaranteed to never
work)
bors [Wed, 7 Oct 2015 17:46:41 +0000 (17:46 +0000)]
Auto merge of #2034 - alexcrichton:update-toml, r=alexcrichton
Closes #2031
Closes #2033
Alex Crichton [Wed, 7 Oct 2015 17:37:56 +0000 (10:37 -0700)]
Update TOML dependency
Closes #2031
Closes #2033
Alex Crichton [Wed, 7 Oct 2015 16:23:32 +0000 (09:23 -0700)]
Write the build script output ASAP
This can help debug some situations if an error happens parsing the output.
bors [Tue, 6 Oct 2015 21:54:10 +0000 (21:54 +0000)]
Auto merge of #2022 - alexcrichton:refactor, r=brson
This series of commits performs two primary tasks:
* The backend is refactored (again!) to have a much better understanding of what's used as input to everything else in terms of parallelization and dependency tracking. The major goal here was to completely unify all parts of the backend which sort of ad-hoc track dependencies and deal with cross compilation. More details can be found in the first commit message.
* Greatly improving diagnostics for why a crate is being rebuilt. This still requires setting `RUST_LOG`, but it was spurred on by #2011 and should help at least my own personal internal debugging of "why is this crate rebuilding?" which seems to come up quite often!
bors [Tue, 6 Oct 2015 17:43:01 +0000 (17:43 +0000)]
Auto merge of #2029 - aarzee:clean, r=alexcrichton
Remove leading newlines; replace lines containing only whitespace with empty lines; replace multiple trailing newlines with a single newline
Carlos Liam [Tue, 6 Oct 2015 17:15:40 +0000 (13:15 -0400)]
Clean whitespace
Remove leading newlines; replace lines containing only whitespace with
empty lines; replace multiple trailing newlines with a single newline
bors [Tue, 6 Oct 2015 15:43:24 +0000 (15:43 +0000)]
Auto merge of #2028 - aarzee:master, r=alexcrichton
Carlos Liam [Tue, 6 Oct 2015 15:42:20 +0000 (11:42 -0400)]
regex-synatx -> regex-syntax
Alex Crichton [Tue, 6 Oct 2015 06:27:26 +0000 (23:27 -0700)]
Drop 1.1.0 as crossbeam needs `const fn`
To parse at least
Alex Crichton [Sun, 4 Oct 2015 19:02:33 +0000 (12:02 -0700)]
Don't bother sorting build scripts
Turns out the tests don't actually need this "more deterministic" output and it
was also showing up relatively high in profiles (e.g. ~15% of a noop runtime) so
if this is necessary let's find a better way!
Alex Crichton [Sun, 4 Oct 2015 18:52:58 +0000 (11:52 -0700)]
Add better diagnostics for rebuilding
This commit overhauls how a `Fingerprint` is stored on the filesystem and
in-memory to help provide much better diagnostics as to why crates are being
rebuilt. This involves storing more structured data on the filesystem in order
to have a finer-grained comparison with the previous state. This is not
currently surfaced in the output of cargo and still requires
`RUST_LOG=cargo::ops::cargo_rustc::fingerprint=info` but if it turns out to be
useful we can perhaps surface the output.
There are performance considerations here to ensure that a noop build is still
quite speedy for a few reasons:
1. JSON decoding is slow (these are just big structures to decode)
2. Each fingerprint stores all recursive fingerprints, so we can't just "vanilla
decode" as it would decode O(n^2) items
3. Hashing is actually somewhat nontrivial for this many items here and there,
so we still need as much memoization as possible.
To ensure that builds are just as speedy tomorrow as they are today, a few
strategies are taken:
* The same fingerprint strategy is used today as a "first line of defense" where
a small text file with a string contains the "total fingerprint" hash. A
separately stored file then contains the more detailed JSON structure of the
old fingerprint, and that's only decoded if there's a mismatch of the short
hashes. The rationale here is that most crates don't need to be rebuilt so we
shouldn't decode JSON, but if it does need to be rebuilt then the work of
compiling far dwarfs the work of decoding the JSON.
* When encoding a full fingerprint as JSON we don't actually include any
dependencies, just the resolved u64 of them. This helps the O(n^2) problem in
terms of decoding time and storage space on the filesystem.
* Short hashes continue to be memoized to ensure we don't recompute a hash if
we've already done so (e.g. shared dependencies).
Overall, when profiling with Servo, this commit does not regress noop build
times, but should help diagnose why crates are being rebuilt hopefully!
Closes #2011
Alex Crichton [Fri, 2 Oct 2015 06:48:47 +0000 (23:48 -0700)]
Add helper functions for reading/writing whole files
Adds some helpful error text if an error happens as well
Alex Crichton [Fri, 2 Oct 2015 06:48:47 +0000 (23:48 -0700)]
Refactor Cargo's backend, again!
This commit started out identifying a relatively simple bug in Cargo. A recent
change made it such that the resolution graph included all target-specific
dependencies, relying on the structure of the backend to filter out those which
don't need to get built. This was unfortunately not accounted for in the portion
of the backend that schedules work, mistakenly causing spurious rebuilds if
different runs of the graph pulled in new crates. For example if `cargo build`
didn't build any target-specific dependencies but then later `cargo test` did
(e.g. a dev-dep pulled in a target-specific dep unconditionally) then it would
cause a rebuild of the entire graph.
This class of bug is certainly not the first in a long and storied history of
the backend having multiple points where dependencies are calculated and those
often don't quite agree with one another. The purpose of this rewrite is
twofold:
1. The `Stage` enum in the backend for scheduling work and ensuring that maximum
parallelism is achieved is removed entirely. There is already a function on
`Context` which expresses the dependency between targets (`dep_targets`)
which takes a much finer grain of dependencies into account as well as
already having all the logic for what-depends-on-what. This duplication has
caused numerous problems in the past, an unifying these two will truly grant
maximum parallelism while ensuring that everyone agrees on what their
dependencies are.
2. A large number of locations in the backend have grown to take a (Package,
Target, Profile, Kind) tuple, or some subset of this tuple. In general this
represents a "unit of work" and is much easier to pass around as one
variable, so a `Unit` was introduced which references all of these variables.
Almost the entire backend was altered to take a `Unit` instead of these
variables specifically, typically providing all of the contextual information
necessary for an operation.
A crucial part of this change is the inclusion of `Kind` in a `Unit` to ensure
that everyone *also* agrees on what architecture they're compiling everything
for. There have been many bugs in the past where one part of the backend
determined that a package was built for one architecture and then another part
thought it was built for another. With the inclusion of `Kind` in dependency
management this is handled in a much cleaner fashion as it's only calculated in
one location.
Some other miscellaneous changes made were:
* The `Platform` enumeration has finally been removed. This has been entirely
subsumed by `Kind`.
* The hokey logic for "build this crate once" even though it may be depended on
by both the host/target kinds has been removed. This is now handled in a much
nicer fashion where if there's no target then Kind::Target is just never used,
and multiple requests for a package are just naturally deduplicated.
* There's no longer any need to build up the "requirements" for a package in
terms of what platforms it's compiled for, this now just naturally falls out
of the dependency graph.
* If a build script is overridden then its entire tree of dependencies are not
compiled, not just the build script itself.
* The `threadpool` dependency has been replaced with one on `crossbeam`. The
method of calculating dependencies has quite a few non-static lifetimes and
the scoped threads of `crossbeam` are now used instead of a thread pool.
* Once any thread fails to execute a command work is no longer scheduled unlike
before where some extra pending work may continue to start.
* Many functions used early on, such as `compile` and `build_map` have been
massively simplified by farming out dependency management to
`Context::dep_targets`.
* There is now a new profile to represent running a build script. This is used
to inject dependencies as well as represent that a library depends on running
a build script, not just building it.
This change has currently been tested against cross-compiling Servo to Android
and passes the test suite (which has quite a few corner cases for build scripts
and such), so I'm pretty confident that this refactoring won't have at least too
many regressions!
Alex Crichton [Thu, 1 Oct 2015 17:26:33 +0000 (10:26 -0700)]
Touch up docs and use inline table syntax
This performs a pass over the docs, touching up sections in a few places and
also moving everything to using inline table syntax by default (the favorted way
to add a dependency)
bors [Sun, 4 Oct 2015 18:42:08 +0000 (18:42 +0000)]
Auto merge of #2019 - phi-gamma:dot-path-fix, r=alexcrichton
When traversing the directory tree, cargo will omit paths that start
with a period character to avoid interfering with other software.
Unfortunately this also prevents a crate from being located in a
directory prefixed with a period. Address this by extending the test
against the traversal root that already guards Git submodules.
Fixes issue #1999 which was introduced with commit
11144645f..
Philipp Gesang [Fri, 2 Oct 2015 22:19:39 +0000 (00:19 +0200)]
Add test case for project root located in dotdir
Philipp Gesang [Fri, 2 Oct 2015 20:27:41 +0000 (22:27 +0200)]
Do not skip the root path if it's a dotdir
When traversing the directory tree, cargo will omit paths that start
with a period character to avoid interfering with other software.
Unfortunately this also prevents a crate from being located in a
directory prefixed with a period. Address this by extending the test
against the traversal root that already guards Git submodules.
Fixes issue #1999 which was introduced with commit
11144645f..
bors [Thu, 1 Oct 2015 17:35:45 +0000 (17:35 +0000)]
Auto merge of #2018 - alexcrichton:dox, r=steveklabnik
This performs a pass over the docs, touching up sections in a few places and
also moving everything to using inline table syntax by default (the favorted way
to add a dependency)
r? @steveklabnik
Alex Crichton [Thu, 1 Oct 2015 17:26:33 +0000 (10:26 -0700)]
Touch up docs and use inline table syntax
This performs a pass over the docs, touching up sections in a few places and
also moving everything to using inline table syntax by default (the favorted way
to add a dependency)
bors [Thu, 1 Oct 2015 16:44:57 +0000 (16:44 +0000)]
Auto merge of #2015 - alexcrichton:fix-nightly, r=alexcrichton
Some output of failing tests have been tweaked, so update the associated tests.
Alex Crichton [Thu, 1 Oct 2015 00:58:08 +0000 (17:58 -0700)]
Fix tests on nightly
Some output of failing tests have been tweaked, so update the associated tests.
bors [Wed, 30 Sep 2015 23:26:50 +0000 (23:26 +0000)]
Auto merge of #1828 - fhahn:multiple-package-parameters, r=alexcrichton
This PR for #1528 is still pretty rough (and so far only added multiple package support for tests), but I wanted to make sure the overall approach is fine.
I have made some progress and cargo is now able to compile and execute tests for multiple packages.
In order to execute the doc tests for multiple packages as well, I added `to_doc_test` to `Compilation` (used [here](https://github.com/fhahn/cargo/commit/
8b8df3e8d5abfa638852f55730d2f3cb4eec66bc#diff-417e085367d0ce027505dfaa26a089d3R33)). Previously it only executed the doc tests for `Compilation.package`. Another option would be to change `Compilation.package` to be a `Vec<Package>`, because in order to execute the tests of multiple packages, multiple packages are compiled as "top level package". But this would require a changes at a couple of other places.
Florian Hahn [Thu, 24 Sep 2015 21:47:50 +0000 (23:47 +0200)]
Use std::env::EXE_SUFFIX in new tests
Florian Hahn [Tue, 15 Sep 2015 23:02:37 +0000 (01:02 +0200)]
Add support for multiple -p options to `cargo update`
closes #1528
Florian Hahn [Tue, 15 Sep 2015 22:29:38 +0000 (00:29 +0200)]
Add support for multiple -p options to `cargo clean`
Florian Hahn [Sat, 12 Sep 2015 21:32:35 +0000 (23:32 +0200)]
Use docopt's new syntax for repeatable options
Florian Hahn [Thu, 16 Jul 2015 20:35:40 +0000 (22:35 +0200)]
Add support for multiple -p options to `cargo {bench, build, doc}`
Steven Fackler [Tue, 29 Sep 2015 05:30:40 +0000 (22:30 -0700)]
Add a test for wildcard constraint warnings
Steven Fackler [Sun, 27 Sep 2015 23:52:01 +0000 (16:52 -0700)]
Add a warning when packaging crates with wildcard dependencies
bors [Tue, 29 Sep 2015 15:31:33 +0000 (15:31 +0000)]
Auto merge of #2005 - sfackler:wildcard-warnings, r=alexcrichton
r? @alexcrichton
Any ideas on how to make a reliable test for this? Making a test with multiple dependencies on stuff off of crates.io seems to make output pretty nondeterministic wrt download and compilation ordering.
Steven Fackler [Tue, 29 Sep 2015 05:30:40 +0000 (22:30 -0700)]
Add a test for wildcard constraint warnings
bors [Mon, 28 Sep 2015 22:48:29 +0000 (22:48 +0000)]
Auto merge of #2006 - alexcrichton:no-dylibs, r=brson
Currently it's not possible to inform Cargo about target-specific crate types,
so generating a hard error whenever a dylib is seen for a target that can't
produce dylibs is a little heavy. This commit disables management of the output
dylib (which won't actually exists) and relies on the compiler to print a
warning in the case of a dylib output on a non-dylib target.
Alex Crichton [Mon, 28 Sep 2015 20:52:34 +0000 (13:52 -0700)]
Don't fail if dylib outputs aren't supported
Currently it's not possible to inform Cargo about target-specific crate types,
so generating a hard error whenever a dylib is seen for a target that can't
produce dylibs is a little heavy. This commit disables management of the output
dylib (which won't actually exists) and relies on the compiler to print a
warning in the case of a dylib output on a non-dylib target.
Steven Fackler [Sun, 27 Sep 2015 23:52:01 +0000 (16:52 -0700)]
Add a warning when packaging crates with wildcard dependencies
bors [Sat, 26 Sep 2015 18:03:39 +0000 (18:03 +0000)]
Auto merge of #2003 - cesarb:issue-587, r=alexcrichton
Based on rust's mk/reconfig.mk
Fixes #587 and #1993
Cesar Eduardo Barros [Sat, 26 Sep 2015 14:54:16 +0000 (11:54 -0300)]
Regenerate Makefile if Makefile.in or configure change
Based on rust's mk/reconfig.mk
Fixes #587 and #1993
bors [Tue, 22 Sep 2015 23:23:09 +0000 (23:23 +0000)]
Auto merge of #1996 - aturon:cargo-features, r=alexcrichton
When I was looking for this in the docs, it was a bit confusingly buried.
r? @alexcrichton
Aaron Turon [Tue, 22 Sep 2015 20:17:07 +0000 (13:17 -0700)]
Document use of features for `cfg` more prominently
bors [Tue, 22 Sep 2015 01:59:49 +0000 (01:59 +0000)]
Auto merge of #1994 - carols10cents:rust-updates, r=alexcrichton
I noticed the tests on my PR were failing and for once it wasn't because I messed up expectations involving path separators on windows!!!
They were failing because [nightly rust now has error code E0463](https://github.com/rust-lang/rust/commit/
7358a5e8ea7c2ab0aaa76b503ef68161e44681a0) for "can't find crate" and the cargo tests weren't allowing for that. Just threw some `[..]`s in there so they should pass on all the rusts-- lmk if you'd like to have a comment that mentions the code could be added in there when rust 1.5 is released.
Speaking of rust trains, I also took this opportunity to change all the `connect`s to `join`s and remove the `allow(deprecated)`s since 1.3 was released! :sparkler:
bors [Tue, 22 Sep 2015 01:47:44 +0000 (01:47 +0000)]
Auto merge of #1991 - carols10cents:pipelinify, r=alexcrichton
Hi! This is an attempt to start refactoring some of the internals to be more like a pipeline, and eventually enable the kind of functionality I tried to add in #1968 without having to add as much duplication. Turns out there's a fair bit of duplication in the code today, I think this helps address it!
I may have totally gone against some abstractions... namely I made a way to create `Package`s from a `manifest_path` and a `config`, without needing a `Source`. I think it cleans up the code quite a bit, and I think makes things a bit more pipeliney in that the `Source` isn't updated until we really need it to be (as opposed to having to use `preload` to avoid updating it again). But I'm open to the possibility that I'm moving things around to where no one who knows the code well will be able to find them ;)
This *should* be a Real Refactor in the sense that these changes don't change behavior-- except in one test case, where the same error happens as did before, but it's going through a `chain_error` now so has a slightly different message.
Carol (Nichols || Goulding) [Tue, 22 Sep 2015 01:06:30 +0000 (21:06 -0400)]
Add a try! that I forgot
If at first you don't succeed to call try!, try try! again ;)
Carol (Nichols || Goulding) [Tue, 22 Sep 2015 01:00:23 +0000 (21:00 -0400)]
Keep the error message that starts with a lowercase letter
Carol (Nichols || Goulding) [Tue, 22 Sep 2015 00:55:50 +0000 (20:55 -0400)]
Test on Travis with Rust 1.1.0 and 1.2.0
Carol (Nichols || Goulding) [Sun, 20 Sep 2015 18:25:53 +0000 (14:25 -0400)]
Update tests to be tolerant of new error code [E0463]
Added in
https://github.com/rust-lang/rust/commit/
7358a5e8ea7c2ab0aaa76b503ef68161e44681a0
bors [Mon, 21 Sep 2015 19:58:13 +0000 (19:58 +0000)]
Auto merge of #1995 - alexcrichton:less-recursion, r=alexcrichton
A few final nits and such taken care of, attempting to land now!
Alex Crichton [Mon, 21 Sep 2015 19:57:13 +0000 (12:57 -0700)]
Touch up some style and comments in resolution
Alex Crichton [Mon, 21 Sep 2015 19:03:05 +0000 (12:03 -0700)]
Avoid a to_vec in the resolver
Alex Crichton [Mon, 21 Sep 2015 19:02:46 +0000 (12:02 -0700)]
Don't use an 8MB stack any more
Now that the resolver isn't recursive this shouldn't be necessary
Alex Crichton [Mon, 21 Sep 2015 16:17:37 +0000 (09:17 -0700)]
Merge branch 'non-recursive-activate' of https://github.com/jyasskin/cargo
bors [Sun, 20 Sep 2015 05:05:03 +0000 (05:05 +0000)]
Auto merge of #1992 - carols10cents:cleanup, r=alexcrichton
Hiii! These are just a few small cleanup things that I took care of while working on #1991, but these should all be less controversial than that one is :)
Carol (Nichols || Goulding) [Sun, 20 Sep 2015 03:47:53 +0000 (23:47 -0400)]
Fixing typos and grammar in comments
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 18:39:34 +0000 (14:39 -0400)]
Remove unnecessary PathSource update in cargo test
I don't think updating the source here is hurting anything, per se, it's
just unnecessary since ops::compile makes a PathSource and then calls
root_package, which will call update if it needs to.
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 14:41:06 +0000 (10:41 -0400)]
Move test to a more appropriate location
This test isn't testing generate-lockfile at all-- it's generating a
lockfile with `\r\n` in it in the test itself and then testing that
building will succeed even if there are `\r\n`s in the lockfile.
Given that generate-lockfile could change and have no effect on this
test, I think this fits in better with the other `cargo build` tests.
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 14:36:07 +0000 (10:36 -0400)]
Remove unneeded commented-out code
Carol (Nichols || Goulding) [Sun, 20 Sep 2015 00:41:40 +0000 (20:41 -0400)]
Extract a function for getting resolved packages from a registry
This code was happening in both cargo fetch and cargo compile and had a
slightly different error message in each ;)
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 20:13:55 +0000 (16:13 -0400)]
Remove registry preload and avoid updating sources prematurely instead
So registry preloading was added[1] to avoid updating the root path
multiple times unnecessarily, since that's an expensive operation. But
with Package::from_path, we can get the root package just from a
manifest and a config without having to update the whole path source.
So now we don't have to remember to preload the registry if we've
already updated a source and want to use the registry later. Instead, we
just avoid loading the source initially and let the registry do it when
it needs to -- which is now in resolve_with_previous.
This does cause one tested error message to happen slightly later than
it used to, but it still happens.
[1] -
ef8c651af
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 18:07:04 +0000 (14:07 -0400)]
Remove dependency on Source if we only want a Package
As alluded to in the previous commit, we don't actually need a Source at
all in order to be able to get a Package given a manifest and a config.
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 17:50:14 +0000 (13:50 -0400)]
Extract contructor for Package where only root_package is needed
There are many places where both source and its root_package() are used,
but in these places, the only reason the source is created is to get to
the root_package.
This just extracts the source creation into a Package constructor for
now, but I think this can be made to not use source at all.
Carol (Nichols || Goulding) [Sat, 19 Sep 2015 17:06:23 +0000 (13:06 -0400)]
Update source when getting its root_package
This way, callers who want source.root_package() don't have to remember
to call source.update() before that. Since source.update() is a noop if
the source has already been updated, there's not a reason I could see to
raise an error instead of just calling it.
The one remaining place that calls source.root_package() that is still
calling source.update() immediately before is in bin/read_manifest,
where the errors from update() are mapped to CliErrors.
Jeffrey Yasskin [Thu, 17 Sep 2015 03:37:45 +0000 (20:37 -0700)]
Make Dependency cheap to copy by having it store a refcounted inner object.
bors [Wed, 16 Sep 2015 17:34:50 +0000 (17:34 +0000)]
Auto merge of #1988 - alexcrichton:bump, r=brson
I'll tag 0.5.0 with the previous commit after this is merged.
Alex Crichton [Wed, 16 Sep 2015 16:35:43 +0000 (09:35 -0700)]
Bump to 0.6.0
bors [Mon, 14 Sep 2015 21:48:44 +0000 (21:48 +0000)]
Auto merge of #1986 - mneumann:dragonfly-snapshot, r=alexcrichton
http://www.ntecs.de/downloads/rust/cargo-nightly-x86_64-unknown-dragonfly.tar.gz
This is the 0.5 version of cargo as it's much harder to build an old snapshot.
Michael Neumann [Sun, 13 Sep 2015 20:24:43 +0000 (22:24 +0200)]
Add snapshot for DragonFly
http://www.ntecs.de/downloads/rust/cargo-nightly-x86_64-unknown-dragonfly.tar.gz
This is the 0.5 version of cargo as it's much harder to build an old snapshot.
bors [Sun, 13 Sep 2015 17:45:35 +0000 (17:45 +0000)]
Auto merge of #1949 - nicokoch:fix-1904, r=alexcrichton
This flag can be used to force cargo to run all tests, even if previous
tests failed. See #1904